
package com.sky.service;

import com.sky.dto.SetMealDTO;
import com.sky.dto.SetMealPageQueryDTO;
import com.sky.entity.SetMeal;
import com.sky.result.PageResult;
import com.sky.vo.DishItemVO;
import com.sky.vo.SetMealVO;

import java.util.List;

/**
 * sky-take-out
 * com.sky.service <br>
 * 套餐Service
 * @author Ablecisi
 * @version 1.0
 * 2025/3/28
 * 17:06
 */
public interface SetMealService {
    /**
     * 套餐分页查询
     * @param setMealPageQueryDTO 套餐分页查询参数
     * @return 套餐分页查询结果
     */
    PageResult<SetMealVO> pageQuerySetMeal(SetMealPageQueryDTO setMealPageQueryDTO);

    /**
     * 添加套餐
     * @param setMealDTO 套餐参数
     */
    void addSetMeal(SetMealDTO setMealDTO);

    /**
     * 删除套餐
     * @param setMealIds 套餐id
     */
    void deleteSetMeal(List<Long> setMealIds);

    /**
     * 根据套餐id查询套餐
     * @param setMealId 套餐id
     * @return 套餐
     */
    SetMealVO querySetMealById(Long setMealId);

    /**
     * 更新套餐
     * @param setMealDTO 套餐参数
     */
    void updateSetMeal(SetMealDTO setMealDTO);

    /**
     * 更新套餐状态
     * @param setMealId 套餐id
     * @param status 状态
     */
    void updateSetMealStatus(Long setMealId, Integer status);

    /**
     * 根据分类id查询套餐
     * @param setMeal 套餐参数
     * @return 套餐列表
     */
    List<SetMeal> querySetMealByCategoryId(SetMeal setMeal);

    /**
     * 根据套餐id查询套餐菜品
     * @param setMealId 套餐id
     * @return 菜品列表
     */
    List<DishItemVO> getDishItemById(Long setMealId);
}
